Golang常用包有哪些? |
您所在的位置:网站首页 › golang func › Golang常用包有哪些? |
不建议采用通读的方式来学习,通读包文档,是在太过无聊了,敲几个例子,粗略了解一下就好了。 如果想深入,还是具体想些案例,以实践方式学习比较实在一点,没有思路的话,可以试着去网上找找别人的最佳实践。 回归正题吧! 说到常用包,我觉得,可以从使用层面来考虑下,分类列举会比较好。问题中未指明类别,我就随便说说吧。 数据处理数据处理对于不同数据类型有不同的处理方式,比如常见数值型的数学运算、字符串处理、底层的 数学运算常见的数学运算,比如加、减、乘、除、取模都是内置的,但有些复杂的计算需要依赖库实现。 math,数学库,各种复杂的数学运算,比如三角函数、对数、幂运算等,文档地址pkg/math/。 go-num,类似 Python 的 numpy,Go 中数据科学的基础软件包,文档 gonum/gonum。 字符串处理主要是 strings 包,提供了各种字符串操作处理的函数。其中的方法很多,不用一次都记住,用的时候看看就行了。 关于文档,你可以去看官方的,文档地址如下: 当然,你也可以在网上找一些博客。如下面这篇,简单直接,基本把每种方法的使用都列了出来。 除了 strings,还有一个包和字符串操作的关系比较大,那就是 strconv,从包名就能了解,它是做字符串和其他类型数据的转换的,即 string convert。 官方文档地址如下: 从其中,你可以找到怎么把字符串转化为 bool、int、float 的方法,也可以找到怎么把这些类型转化为字符串。如果涉及到进制转化,strconv 中也有相应的函数。 数据结构常见的有数组、切片、映射、链表、堆、集合等,对应的包有: 数组、切片、映射,都是系统内置,看 Go 的 builtin 包文档 pkg/builtin/ 即可,除此以外,还有些博客文章可以看看。如下是两篇来自官方的文档: 链表、堆等数据结构由标准库提供,文档地址 pkg/container/。提供了三种数据结构,分别是双向链表、环形链表和堆。 集合,Go 中没有提供,但有几个第三方包可以使用,可以去看看我最近写的一篇文章,顺便简单介绍了 Go 中如何自己实现 set。 文章中提供了 4 个别人开发的 Go 的 set 实现。 二进制二进制数据,个人感觉,一般都是用在数据传输上,或者一些对性能要求比较高的场景,比如前面提到的 set,它的实现也可以实现二进制实现。节省存储空间的同时,也提高了性能。 Go 中关于二进制处理的包是 binary,从名字就能看看出来。比如网络数据传输中常见的大小端的问题,[]byte 转 int 的方法,在 binary 中都能找到一些解决方案。 官方文档地址如下: 之前知乎上回答过相关问题,链接贴在下面: 缓冲 io在写 Go 代码时,为了提高 IO 写入读取的性能,常常会使用一个包,即 bufio,如其名,主要是用 IO 读取写入的缓冲, 官方文档地址,如下: 一个简单写入的例子。 package main import ( "bufio" "fmt" ) type Writer int func (*Writer) Write(p []byte) (n int, err error) { fmt.Printf("Write: %q\n", p) return len(p), nil } func main() { w := new(Writer) bw := bufio.NewWriterSize(w, 3) _, _ = bw.Write([]byte{'a'}) _, _ = bw.Write([]byte{'b'}) _, _ = bw.Write([]byte{'c'}) _, _ = bw.Write([]byte{'d'}) _ = bw.Flush() }写入超过指定数量,才会真正执行底层的写入动作。读取 read 的效果类似。 推荐一篇英文文章,对 bufio 的介绍不错,地址如下: 数据库我理解主要分为两大类,即底层驱动类的包和上层的 ORM 包。 关于数据库的底层驱动,我大概了解了下,Go 官方没有提供具体的实现,只提供了接口定义 database 包,而驱动是由第三方实现。database 的文档地址: 我主要用的 MySQL,其他并没有怎么了解。其相应的地址如下: Go 的 orm,常用的 gorm、beego orm、xorm、sqlx 等等。我现在用的 gorm,原因到没有怎么去想,因为 Go 的学习暂时还只有三个月,没那么多时间去思考这些问题,以后可以再来对比。 gorm 文档: github 地址: 网络Go 相比于其他很多语言,自带了 http 实现,即 net/http 包,包含了客户端和服务端的实现。 官方文档地址如下: 比如,实现一个简单的 HTTP 服务,只需要几行代码,如下: package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Welcome to my website!") }) fs := http.FileServer(http.Dir("static/")) http.Handle("/static/", http.StripPrefix("/static/", fs)) http.ListenAndServe(":80", nil) }如果你对性能的要求比较高,希望提升原生的 http 库性能,还有第三方开发了一个高性能的 http 库,名为 fasthttp,关于它如何做到提升,之前看到一个问题,链接如下: 其中一点就是,它通过 slice 可实现了内存复用,gc 的次数非常少; 客户端部分,之前也做了一些研究,并写了一篇关于它的使用教程,地址如下: 使用 HTTP 请求,或许还是爬虫场景用的较多吧。 网络包下面还有关于 socket、rpc 等包,也是非常常用的功能,有兴趣可以看看。 其他不扯了,这种事情是扯不完了。什么是常用包,主要取决于你在做什么领域的事情。但是一些基础库,无论做什么基本都会用到。库是很多的,学习的话,一个方向了解一两个应该就差不多了。 补充: 对了,忘了贴这个万能大法 awesome-go 了。它是什么?自己去看吧! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |